package com.example.demo.service;

import com.example.demo.entity.SchoolClass;
import com.example.demo.entity.SchoolCourse;
import com.example.demo.entity.SchoolGrade;
import com.example.demo.entity.SchoolStudent;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.List;

public interface SchoolService {
    Flux<SchoolClass> findAllSchoolClass();

    Flux<SchoolClass> findSchoolClassByGrade(Long gradeId);

    Flux<SchoolGrade> findAllSchoolGrade();

    Flux<SchoolGrade> findAllSchoolGrade1();

    Flux<SchoolGrade> findAllSchoolGrade2();

    Mono<SchoolGrade> saveSchoolGrade(SchoolGrade schoolGrade);
    Mono<SchoolClass> saveSchoolClass(SchoolClass schoolClass);
    Mono<SchoolStudent> saveSchoolStudent(SchoolStudent schoolStudent);
    Mono<SchoolCourse> saveSchoolCourse(SchoolCourse schoolCourse);


    Mono<String> saveClassWithStudents(SchoolClass schoolClass);
    Mono<String> saveClassWithStudentsAndCourses(List<SchoolClass> schoolClasses);
    //
    Mono<String> saveSchoolGradeOne(SchoolGrade schoolGrades);
    Mono<String> saveSchoolGradeList(List<SchoolGrade> schoolGrades);

    Mono<Void> deleteSchoolClassAndStudentsById(Long Id);
    Mono<String> deleteSchoolClassAndStudentsAndCoursesById(Long Id);

    }
